package com.tdrc.common.mapper;

import com.tdrc.common.beans.Permission;
import com.tdrc.common.beans.User;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * @author Administrator
 */
public interface UserMapper {
     /**
      * 添加用户
      * @param user
      */
     void addUser(User user);

     /**
      * 更新用户
      * @param user
      */
     void updateUser(User user);

     /**
      * 删除用户
      * @param userId
      */

     void deleteUser(Integer userId);

     /**
      * 分页用户列表
      * @param map
      * @return
      */
     List<Map<String,Object>> listPageUser(@Param("map") Map<String,Object> map);

     /**
      * 判断登录名称是否重复
      * @param logName
      * @return
      */
     long checkLogNameUnique(String logName);

     /**
      * 判断用户名是否重复
      * @param userName
      * @return
      */
     long checkUserNameUnique(String userName);

     /**
      *更新用户状态
      * @param user
      */
     void updateUserStatus(User user);

     /**
      * 根据用户ID查询角色及角色选中的状态
      * @param userId
      * @return
      */
     List<Map<String,Object>>getRoleList(Integer userId);

     /**
      * 根据用户ID删除配置角色
      * @param userId
      * @return
      */
     int deleteUserRoleByUserId(Integer userId);

     /**
      * 给用户添加角色配置
      * @param roles
      * @param userId
      */
     void addUserRole(@Param("roles") List<Integer> roles,@Param("userId") Integer userId);

     /**
      * 根据账号查找用户
      * @param logName
      * @return
      */
     User getUserByLogName(String logName);

     /**
      * 根据有用户ID获取角色
      * @param userId
      * @return
      */
     List<Permission> getRolesByUserId(Integer userId);

     /**
      * 根据菜单ID获取权限
      * @param roleId
      * @param menuId
      * @return
      */
     Set<Permission.ActionEntity> getPermissionByMenuId(@Param("roleId") Integer roleId,@Param("menuId") Integer menuId);

     /**
      * 获取用户信息
      * @param userId
      * @return
      */
     Map<String,Object> getUserInfo(Integer userId);

}
